package com.shan.design.strategy;

/**
 * description
 * 策略测试类型
 *
 * @author shanzheng <br/>
 * @date 16:35 2018/11/27.<br/>
 * Modified By <br/>
 */
public class StrategyTest {
    /*
    * 何为策略类：
    * 实现某一个功能有很多途径，每个途径都对应一种算法，此时我们可以使用策略模式灵活的选择解决途径。
    * 也方便增加新的解决途径。
    * 实际例子：
    * 我们出行选择开飞机出行，但飞机类型多种多样，每种飞机类型对应的起飞和速度方式不同，所以我们将飞
    * 机种类作为抽象类。然后自主选择开什么飞机出门
    * */

    public static void main(String[] args) {
        Context context = new Context();
        AbstractPlane abstractPlane;
        // 可在运行时指定类型
        abstractPlane = new Helicopter();
        context.setAbstractPlane(abstractPlane);
        context.planeIntroduction();
    }

}
